﻿using System;
using System.Collections.Generic;
using Itau.IM.Carimbador.EntityObject;
using Itau.IM.Common.Mainframe.Book;


namespace Itau.IM.Carimbador.Contract
{
    /// <summary>
    /// Classe de requisição da operação ConsultarIrregular
    /// </summary>
    [BookClass(31000)]
    public class ConsultarIrregularRequest
    {
        #region Propriedades

        [BookNumberField(1, 1)]
        public byte TipoFluxo
        {
            get { return 2; }
            set { }
        }

        [BookNumberField(2, 1)]
        public int FlagRecarimbo { get; set; }

        [BookNumberField(3, 9)]
        public int CodigoProdutoFinanceiroDerivado { get; set; }

        [BookDateField(22, "dd.MM.yyyy"), 
        BookDateField(32, "HH.mm.ss")] 
        public DateTime DataHoraOperacao { get; set; }

        [BookCollectionField(40, typeof(BookObjectFieldAttribute), typeof(ParametroEO), 40, "000000000                               ", true, "00")]
        public List<ParametroEO> Parametros { get; set; }

        [BookStringField(1602,20)]
        public string NomeUsuario { get; set; }

        [BookCollectionField(1622, typeof(BookObjectFieldAttribute), typeof(PontoCurvaEO), 500, "          000000000000000000", true, "0000")]
        public List<FluxoCaixaEO> FluxoCaixa { get; set; }

        [BookNumberField(29626, 1)]
        public EnumBaseConversao BaseConversao { get; set; }

        [BookNumberField(29627, 1)]
        public int CodigoTipoAmortizacao { get; set; }

        //[BookNumberField(29628, 8, 9)]
        //public double TaxaOperacao { get; set; }
        
        [BookNumberField(29636, 3)]
        public Int16 BaseTaxaOperacao { get; set; }

        [BookNumberField(29639, 3)]
        public Int16 BaseTIR { get; set; }

        [BookDateField(29642,"dd.MM.yyyy")]
        public DateTime DataReferencia { get; set; }
        
        [BookNumberField(29652, 16, 2)]
        public double ValorPrincipalBruto { get; set; }

        [BookObjectField(29678)]
        public ConsultarRechamada AreaRechamada { get; set; }

        [BookNumberField(29714, 8, 10)]
        public double TaxaOperacao { get; set; }

        #endregion Propriedades

        #region Métodos

        public ConsultarIrregularRequest()
        {
        }

        #endregion Métodos
    }
}